// mapdata.h
#include <QObject>
#include <QVector>
#include <QPointF>
#include "message_map.pb.h"

class MapData : public QObject {
    Q_OBJECT
public:
    explicit MapData(QObject *parent = nullptr);
    Q_INVOKABLE void loadMap(const QString &mapName); // QML可调用的方法
    Q_INVOKABLE QVariantList getRobots() const;
    
signals:
    void pointsUpdated(const QVector<QPointF> &points); // 数据更新信号
    void robotsUpdated();
    void mapBoundsUpdated(double minX, double minY, double maxX, double maxY); // 地图边界信息信号

public slots:
    void updateRobot(const QVariantMap &robotData); // 心跳包接的收机器人状态槽函数

private:
    struct RobotInfo {
        QString id;
        double x;
        double y;
    };
    QList<RobotInfo> currentRobots_;
};